<?php

/**
* @desc Смена пароля.
* 
*/
class Security_Backend_Admins_ChangePassword extends Kernel_Action_Form_Simple 
{
    
    /**
    * @desc If this param is FALSE then try to add table postfix. Change it to 
    * TRUE if there's no need to add language postfix.
    * 
    * @param boolean
    */
    public $no_postfix = true;
    
    /**
     * Таблица, в которой хранится редактируемый элемент.
     *
     * @var string
     */
    protected $_table = 'system_subject';
    
    /**
     * Элементы основной таблицы, которые нужно исключить из формы.
     *
     * @var array
     */
    protected $_exclude = array('email', 'password'); 
    
    /**
     * Инициализирует элементы формы.
     *
     */
    protected function _initElements()
    {
        parent::_initElements();

        $this->_addElement('password1', 'password', array(
            'caption' => __('NEW_PASSWORD'),
            'validators' => array('password'),
        ));
        $this->_addElement('password2', 'password', array(
            'caption' => __('CONFIRM_NEW_PASSWORD'),
        ));
    }
    
    /**
     * Проверяет совпадение друг с другом значений полей типа "password".
     * Перекрываем, чтобы указать, какие именно поля нужно проверять на
     * соответствие.
     *
     * @param   string  $element1[, string  $element2, …]
     */
    protected function _validatePasswords() {
        parent::_validatePasswords('password1', 'password2');
    }
    
    /**
     * Обновляет пароль
     *
     */
    protected function _save() 
    {
        $values = $this->_getValues();
        
        database::update(
            $this->_table, 
            array('password' => md5($values['password1'])), 
            array('id' => (int)Application::getRequest()->get('id'))
        );
    }
    
    protected function _done() 
    {
        $section = (int)Backend_Filter_Structure::get('section');
        $module = Backend_Filter_Structure::get('module');
        $manager = Backend_Filter_Structure::get('manager');
        
        $this->redirect_url = '?section=' . $section . '&module=' . $module . 
            '&manager=' . $manager . '&action=list';
            
        parent::_done();
    }
    
}